import axios from 'axios'

/* 设置默认的 baseURL */
axios.defaults.baseURL = 'http://localhost:3000'

/* 请求拦截器 */
axios.interceptors.request.use((config) => {
  const token = localStorage.getItem('token')
  if (token) {
    // 如果 token 存在，在每个 HTTP header 都加上 token
    // Bearer 是 JWT 的认证头部信息
    config.headers.Authorization = `Bearer ${token}`
  }
  // console.log('请求拦截器 token', token)
  return config
})

/* 响应拦截器 */
axios.interceptors.response.use(
  (res) => {
    return res
  },
  (error) => {
    return Promise.reject('请求失败，请检查网络或联系管理员', error)
  }
)

/* 登录接口 */
const getLoginHttp = (data) => {
  return axios({
    method: 'post',
    url: '/api/login',
    data,
  }).then((res) => {
    // 如果登录成功，则将 token 存入 localStorage
    localStorage.setItem('token', res.data.token)
    return res
  })
}

/* 注册接口 */
const getRegisterHttp = (data) => {
  return axios({
    method: 'post',
    url: '/api/register',
    data,
  })
}

/* 退出登录接口 */
const getLogoutHttp = (data) => {
  return axios({
    method: 'post',
    url: '/api/logout',
    data,
  })
  // 登出移除 token 的封装使用有bug，暂时注释掉
  // .then((res) => {
  //   // 如果登出成功，则将 token 移出 localStorage
  //   localStorage.removeItem('token')
  //   return res
  // })
}

/* 删除 用户信息接口 */
const getDeleteUserHttp = (data) => {
  return axios({
    method: 'post',
    url: '/api/delete',
    data,
  })
}

/* 更新 用户信息接口 */
const getUpdateUserHttp = (data) => {
  return axios({
    method: 'post',
    url: '/api/update',
    data,
  })
}

/* 查询不同类型用户信息接口 */
const getUsersHttp = (data) => {
  return axios({
    method: 'get',
    url: `/api/user?type=${data.type}`,
  })
}

export {
  getLoginHttp,
  getRegisterHttp,
  getLogoutHttp,
  getDeleteUserHttp,
  getUpdateUserHttp,
  getUsersHttp,
}
